/**
 * @param {number} k
 * @param {number} n
 * @return {number[][]}
 */
var combinationSum3 = function (k, n) {
	const res = []
	// 基于当前已选的comb数组(和为sum)，在数start到9中继续选
	const dfs = (start, comb, sum) => {
		// 选够k个数，结束递归
		if (comb.length === k) {
			if (sum === n) {
				res.push(comb.slice()) // 加入结果集
			}
			return
		}
		// 枚举所有的选项
		for (let i = start; i <= 9; i++) {
			comb.push(i) // 选中一个
			dfs(i + 1, comb, sum + i) // 基于i继续往下递归
			comb.pop() // 撤销这个选择
		}
	}
	dfs(1, [], 0)
	return res
}
const res = combinationSum3(3, 7)
console.log('combinationSum3 :>>', res)
